package com.quick.develop.flowable.domain.vo.rule;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * @author junyuan.liu
 * @description: 
 * @date 2022/5/18 16:02
 */
@ApiModel("管理后台 - 流程规则分配 VO")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class BpmRuleRespVO implements Serializable {

    private static final long serialVersionUID = 3627580104746812614L;
    @ApiModelProperty(value = "id")
    private Long id;

    @ApiModelProperty(value = "节点ID")
    private String nodeCode;

    @ApiModelProperty(value = "节点名称")
    private String nodeName;

    @ApiModelProperty(value = "是否多实例")
    private Boolean isMulti;

    @ApiModelProperty(value = "模型ID")
    private String modelId;

    @ApiModelProperty(value = "模型key")
    private String modelKey;

    @ApiModelProperty(value = "部署ID")
    private String deploymentId;

    @ApiModelProperty(value = "定义ID")
    private String processDefinitionId;

    @ApiModelProperty(value = "关联表单编码")
    private String formCode;

    @ApiModelProperty(value = "关联表单类型")
    private String formType;

    @ApiModelProperty(value = "处理意见")
    private String comment;

    @ApiModelProperty(value = "退回节点编码")
    private List<String> backNodeCode;

    @ApiModelProperty(value = "退回节点名称")
    private List<String> backNodeName;

    @ApiModelProperty(value = "按钮权限")
    private List<String> btnEvents;
    
    @ApiModelProperty(value = "默认按钮权限")
    private String defaultBtnEvent;

    @ApiModelProperty(value = "处理人指定类型", notes = "候选或者指定")
    private Integer assigneeType;

    @ApiModelProperty(value = "规则类型")
    private Integer optionsType;

    @ApiModelProperty(value = "负责人")
    private Integer optionsLeader;

    @ApiModelProperty(value = "规则类型数组")
    private Set<String> options;


    /**
     * 是否默认自己
     */
    @ApiModelProperty(value = "是否默认自己")
    private String isDefaultOwn;

    /**
     * 是否可修改
     */
    @ApiModelProperty(value = "是否可修改")
    private String isModifiable;

    /**
     * 是否配置可选范围
     */
    @ApiModelProperty(value = "是否配置可选范围")
    private String isOptionalRange;

    /**
     * 可选控件
     */
    @ApiModelProperty(value = "可选控件")
    private Set<String> optionalControls;

    /**
     * 人员选择配置
     */
    @ApiModelProperty(value = "人员选择配置")
    private String personnelConfigure;


    /**
     * 角色选择配置
     */
    @ApiModelProperty(value = "角色选择配置")
    private String roleConfigure;


    /**
     * 部门选择配置
     */
    @ApiModelProperty(value = "部门选择配置")
    private String deptConfigure;



    /**
     * 人员可选值
     */
    @ApiModelProperty(value = "人员可选值")
    private Set<String> optionsPersonnel;



    /**
     * 角色可选值
     */
    @ApiModelProperty(value = "角色可选值")
    private Set<String> optionsRole;


    /**
     * 部门可选值
     */
    @ApiModelProperty(value = "部门可选值")
    private Set<String> optionsDept;

    /**
     * 退回节点集合
     */
    private List<BackNode> backNodeList;

    /**
     * 特殊业务规则
     */
    private Set<String> specialNodes;


    @Data
    @ApiModel("退回节点")
    public static class BackNode {
        @ApiModelProperty(value = "退回节点编码")
        private String nodeCode;

        @ApiModelProperty(value = "退回节点名称")
        private String nodeName;
    }

}
